function init(){	
			var canvas = document.getElementsByClassName("canvas")[0];
			var title = document.getElementById("title");
			var context = canvas.getContext("2d");
			//设置线条的颜色
			context.strokeStyle="#211119";
			window.onload = function(){
				//调用画棋盘函数
				drawChessboard();
			}
			
			//画棋盘函数
			function drawChessboard(){
				for(var i = 0; i < 15; i++)
				{
					//画横线
					//始起坐标
					context.moveTo(15,15+30*i);
					//终点坐标
					context.lineTo(435,15+30*i);
					//连接两点坐标(两点确定一条直线)
					context.stroke();
					
					// 画纵线
					//始起坐标
					context.moveTo(15+30*i, 15);
					//终点坐标
					context.lineTo(15+30*i, 435);
					//连接两点坐标(两点确定一条直线)
					context.stroke();
				}
			}
			
			/**
			 * 设置一个三维数组，存放棋盘所有能够赢的情况
			 * 五子棋能赢的所有情况的数组(三维的)
			 * 比如：
			 * (x,y,count)
			 * (0,0,1)
			 * (0,1,1)
			 * (0,2,1)
			 * (0,3,1)
			 * (0,4,1)
			 * count:是赢的数量统计,总共赢的数量572种(这个棋盘)
			 * x,y是棋子的坐标（只有一方的棋子能够度满足三维数组中的一种情况就能够获胜)
			 */
			
			//三维数组、并初始化
			var win = [];  //一维
			for(var i = 0; i < 15; i++)
			{
				win[i] = []; //二维
				for(var j = 0; j < 15; j++)
				{
					win[i][j] = [];  //三维
				}
			}
			
			var count = 0;  //赢路线(方式)的统计数量
			
			//统计横向的赢方式数量
			for(var a = 0; a < 15; a++) {
			    for(var b = 0; b < 11;b++) {
			        for(var c = 0; c < 5;c++) {
			            win[b + c][a][count] = true;
			        }
			        count++;
			    }
			}
			
			//统计纵向的赢方式数量
			for(var a = 0; a < 15; a++) {
			    for(var b = 0; b < 11;b++) {
			        for(var c = 0; c < 5;c++) {
			            win[a][b + c][count] = true;
			        }
			        count++;
			    }
			}
			
			//统计斜 '\'的赢方式数量
			for(var a = 0; a < 11; a++) {
			    for(var b = 0; b < 11;b++) {
			        for(var c =0; c < 5;c++) {
			            win[a + c][b + c][count] = true;
			        }
			        count++;
			    }
			}
			//'统计反斜 '/的赢方式数量
			for(var a = 0; a < 11; a++) {
			    for(var b = 4; b < 15;b++) {
			        for(var c =0; c < 5;c++) {
			            win[a + c][b - c][count] = true;
			        }
			        count++;
			    }
			}
			
			//定义一个二维数组，用来标记棋盘上的每个点是否已经下了棋子
			var chessBoard = [];
			for(var i = 0; i < 15; i++)
			{
				chessBoard[i] = [];
				for(var j = 0; j < 15; j++)
				{
					chessBoard[i][j] = 0; //默认设0，表示该点未有棋子
				}
			}
			
			//开始下棋
			var me = true;   //该标记用来判断是否轮到人下棋，true代表人下棋
			var over = false; //该标记用来判断游戏是否结束，false代表未结束
			
			//每在可以赢的方式(路径上)位置下一颗子，myWin[i]++
			//当myWin[i] == 5,说明我方在这个方式上赢的落子已经达到5颗，说明我方已经赢了
			var myWin = []; //记录用户在每一条赢法路径上的分值
			var computerWin = [];  //记录计算机在每一条赢法路径上的分值
			for(var i = 0; i < count; i++)
			{
				//初始为每一个赢的方式（路线)上赋值为0(因为还没落子)
				myWin[i] = 0;
				computerWin[i] = 0;
			}
			
			//为画布添加单击事件
			canvas.onclick = function(e){
				//如果游戏结束，那就返回
				if(over)
				{
					return;
				}
				//判断是否轮到人下棋，不是就返回
				if(!me)
				{
					return;
				}
				var x = e.offsetX;  //获得鼠标点击的x偏移量
				var y = e.offsetY;  //获得鼠标点击的y偏移量
				var i = Math.floor(x / 30);  //向下取整
				var j = Math.floor((y / 30))
				//判断(i,j)这个点上是否已经落子，没有就可以下
				if(chessBoard[i][j] == 0)
				{
					//下子
					oneStep(i,j,me);
					//下完子后，要将这个点标记为已经落子
					chessBoard[i][j] = 1;
					for(var k = 0; k < count; k++)
					{
						if(win[i][j][k])
						{
							myWin[k]++;
							computerWin[k] = 8; //因为我方在这个点上已经落子，所以计算机不可能在包含这个点的赢方式(路径)上赢，
							//判断是否赢了
							if(myWin[k] == 5)
							{
								// alert(k);  //可以查看是在第几个赢的方式上赢的棋
								alert("恭喜你你赢了");
								title.innerHTML = "恭喜你，你赢了啦啦啦~~~";
								over = true;
							}
						}
					}
					if(!over)
					{
						me = !me;
						//计算机开始下子
						computerAI();
						
					}
				}
				
			}
			
			//计算机
			function computerAI()
			{
				//空白子在用户所占用赢法上的分值
				var mySocer = [];
				//空白子在计算机所占用赢法上的分值
				var computerSocer = [];
				for(var i = 0; i < 15; i++)
				{
					mySocer[i] = [];
					computerSocer[i] = [];
					for(var j = 0; j < 15; j++)
					{
						//为每个空白点初值赋0分
						mySocer[i][j] = 0;
						computerSocer[i][j] = 0;
					}
				}
				//空白子的最大分值
				var max = 0;
				//最大值空白子的坐标
				var u = 0,v=0;
				//开始遍历落子
				for(var i = 0; i < 15; i++)
				{
					for(var j = 0; j < 15; j++)
					{
						//判断是否是空白子
						if(chessBoard[i][j] == 0)
						{
							for(var k = 0; k < count; k++)
							{
								if(win[i][j][k])
								{
									//判断人落空白子前已经落有子的赢法路径上的分值(用于防守)
									if(myWin[k] == 1)
									{
										mySocer[i][j] += 200;
									}
									else if(myWin[k] == 2)
									{
										mySocer[i][j] += 400;
									}
									else if(myWin[k] == 3)
									{
										mySocer[i][j] += 2000;
									}
									else if(myWin[k] == 4)
									{
										mySocer[i][j] += 10000;
									}
									
									//判断计算机落空白子前已经落有子的赢法路径上的分值(用于进攻)
									if(computerWin[k] == 1)
									{
										computerSocer[i][j] += 220;
									}
									else if(computerWin[k] == 2)
									{
										computerSocer[i][j] += 420;
									}
									else if(computerWin[k] == 3)
									{
										computerSocer[i][j] += 2100;
									}
									else if(computerWin[k] == 4)
									{
										computerSocer[i][j] += 20000;
									}
								}
							}
						   //得出最大分数的点，并赋给u,v
						   if(mySocer[i][j] > max) {
						       max = mySocer[i][j];
						       u = i;
						       v = j;
						   } else if(mySocer[i][j] == max) {
						       if(computerSocer[i][j] > computerSocer[u][v]) {
						           u = i;
						           v = j;
						       }
						   }
						    
						   if(computerSocer[i][j] > max) {
						       max = computerSocer[i][j];
						       u = i;
						       v = j;
						   } else if(computerSocer[i][j] == max) {
						       if(mySocer[i][j] > mySocer[u][v]) {
						           u = i;
						           v = j;
						       }
						   }
						}
					}
				}
				oneStep(u,v,me);
				chessBoard[u][v] = 1;
				for(var k = 0; k < count; k++)
				{
					if(win[u][v][k])
					{
						computerWin[k]++;
						myWin[k] = 8; //因为我方在这个点上已经落子，所以我不可能在包含这个点的赢方式(路径)上赢，
						if(computerWin[k] == 5)
						{
							alert("你输了");
							title.innerHTML = "抱歉，你又输啦了··_··";
							over = true;
						}
					}
				}
				if(!over)
				{
					me = !me;  //又轮到人下了
				}
			
			}
			
			
			//落子的方法
			function oneStep(i,j,me){
				//开始落笔(画圆一定要有开始落笔和结束落笔)
				context.beginPath();
				//画圆
				context.arc(15+i*30,15+j*30,12,0,2*Math.PI);  
				//结束落笔
				context.closePath();
				var color;
				if(me)
				{
					// color = "#555857";
					color = "#0A0A0A";
					// color = "black";
				}
				else
				{
					// color="red"
					// color = "#f3f3f3";
					color = "#D1D1D1";
				}
				context.fillStyle = color;
				context.fill();
			}
			
			//重新开始的函数
			function restart(){
				window.location.reload();
			}
}